<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <script>
            function Person(str) {
                if (!Person.prototype.isPrototypeOf(this)) {
                    return new Person(str);
                }
                this.tasks = [];
                this.init();
                setTimeout(() => {
                    this.runTasks();
                });
            }
            Person.prototype.runTasks = function () {
                for (let item of this.tasks) {
                    item();
                }
            };
            Person.prototype.init = function () {
                function task() {
                    console.log("this is people");
                }
                this.tasks.push(task);
                return this;
            };
            Person.prototype.eat = function () {
                function task() {
                    console.log("this is people");
                }
                this.tasks.push(task);
                return this;
            };
            Person.prototype.sleep = function () {
                function task() {
                    console.log("slee");
                }
                this.tasks.push(task);
                return this;
            };

            Person.prototype.sleepFrit = function () {
                function task() {
                    console.log("sleepFrit");
                }
                this.tasks.unshift(task);
                return this;
            };
            //成语等待3S，打印 this is people 接着打印正在吃香蕉 等待2S 在打印正在吃苹果
            let res = Person("people")
                .eat("香蕉")
                .sleep(2000)
                .eat("苹果")
                .sleepFrit(3000);
            console.log(res.tasks);
            //先出现sleepFrit 然后3秒后打印吃香蕉等待2s在吃苹果

            /* 
    定义一个Person的类
    至少书写5个特征5个功能（例：this.eyesNumber = 2  特征为眼睛是两个     原型方法  canSpeak   调用传参输出
    --->会说什么什么话   什么什么由参数决定；canEat   吃什么什么饭）
    再定义一个Man和Woman两个类   通过继承Person类拥有人的特征和功能  然后定义他们属于自己性别的特征  （例：this.sex = ‘男’, this.name='xxxx'）
    实现这两个类的方法-->canSpeak/canEat   例如:let man = new Man('张三'); man.canSpeak('chinese')-->输出：张三会说chinses话
    let woman = new Woman('李静');  woman.canEat('榴莲')--->李静吃榴莲饭     切记这几个方法要配合父类的原型方法使用
    实现一个Child的类   例如let child = new Child(new Man(张三) + new Woman(李静));   child.name = '张静'
*/
            // class Person {
            //     constructor(name, age, sex, eat, speak) {
            //         this.name = name;
            //         this.age = age;
            //         this.sex = sex;
            //         this.eat = eat;
            //         this.speak = speak;
            //     }
            //     name() {
            //         console.log("名字是" + this.name);
            //     }
            //     age() {
            //         console.log("年龄是" + this.age);
            //     }
            //     sex() {
            //         console.log("性别是" + this.sex);
            //     }
            //     eat() {
            //         console.log("吃的是" + this.eat);
            //     }
            //     speak() {
            //         console.log("说的是" + this.speak);
            //     }
            // }
            // let p = new Person("zhaowy", 24, "男", "奥利奥", "普通话");
            // console.log(
            //     `${p.name}年龄是${p.age}岁,${p.sex},喜欢吃${p.eat},说的是${p.speak}`
            // );

            // class Man extends Person {
            //     constructor(name, age, sex, eat, speak, look) {
            //         super(name, age, sex, eat, speak);
            //         this.look = look;
            //     }
            //     look() {
            //         console.log("他看起来有" + this.look + "眼睛");
            //     }
            // }
            // let man = new Man(
            //     "zhaowy",
            //     24,
            //     "男",
            //     "奥利奥",
            //     "普通话",
            //     "两只眼睛"
            // );
            // console.log(
            //     `${man.name}年龄是${man.age}岁,${man.sex},喜欢吃${man.eat},说的是${man.speak},长了${man.look}`
            // );

            // class Women extends Person {
            //     constructor(name, age, sex, eat, speak, hair) {
            //         super(name, age, sex, eat, speak);
            //         this.hair = hair;
            //     }
            //     hair() {
            //         console.log("她看起来有着" + this.hair);
            //     }
            // }
            // let woman = new Women(
            //     "zhaowy",
            //     24,
            //     "男",
            //     "奥利奥",
            //     "普通话",
            //     "长头发"
            // );
            // console.log(
            //     `${woman.name}年龄是${woman.age}岁,${woman.sex},喜欢吃${woman.eat},说的是${woman.speak},长了${woman.hair}`
            // );
        </script>
    </body>
</html>
